# -*- coding: utf-8 -*-
import os
import shutil
from git import Repo
from Common.yaml_method import YamlMethod


class DownloadProto:
    """
    下载grpc项目接口文件
    """

    def manage_directory(self, directory_path):
        # 检查目录是否存在
        if not os.path.exists(directory_path):
            # 如果目录不存在，则创建目录
            os.makedirs(directory_path)
            print(f"目录 '{directory_path}' 已创建。")
        else:
            # 如果目录存在，检查是否为空
            if os.listdir(directory_path):
                # 如果目录不为空，则清空目录
                for filename in os.listdir(directory_path):
                    file_path = os.path.join(directory_path, filename)
                    try:
                        if os.path.isfile(file_path) or os.path.islink(file_path):
                            os.unlink(file_path)
                        elif os.path.isdir(file_path):
                            shutil.rmtree(file_path)
                    except Exception as e:
                        print(f"删除文件 '{file_path}' 时出错: {e}")
                print(f"目录 '{directory_path}' 已清空。")
            else:
                print(f"目录 '{directory_path}' 已存在且为空。")

    def clone_repo(self, git_url, project_name):
        current_path = os.getcwd()
        path_list = current_path.split('tpweb-server')
        grpc_path = path_list[0] + 'tpweb-server/grpc/' + project_name + "/proto"
        # 检查项目目录
        self.manage_directory(grpc_path)

        code = YamlMethod().read_data('code.yaml')['code']
        # 克隆grpc项目
        try:
            Repo.clone_from(git_url, grpc_path)
            print(f"项目文件下载成功，保存在： {grpc_path}")
            res = {
                'code': code[0],
                'message': 'success',
                'data': {}
            }
            return res
        except Exception as e:
            print(f"项目文件下载失败: {e}")
            res = {
                'code': code[11],
                'message': '下载失败',
                'data': {}
            }
            return res


if __name__ == '__main__':
    git_url = "https://gitlab-vywrajy.micoworld.net/yoho-common/shortvideo-protocol.git"
    DownloadProto().clone_repo(git_url, "ShortVideo")